Ansible-এ ফাইল এবং ডিরেক্টরি ম্যানেজমেন্ট হলো একটি সাধারণ কাজ, যেখানে ফাইল এবং ডিরেক্টরি তৈরি করা, পরিবর্তন করা, কপি করা, মুছে ফেলা, এবং অনুমতি সেট করার জন্য বিভিন্ন মডিউল ব্যবহার করা হয়। Ansible এই ধরনের টাস্ক অটোমেট করতে সহায়ক মডিউল সরবরাহ করে, যেমন: file
, copy
, template
, এবং synchronize
। নিচে এই মডিউলগুলোর বিবরণ এবং উদাহরণ দেয়া হলো।
file
মডিউলfile
মডিউল ব্যবহার করে ফাইল এবং ডিরেক্টরি তৈরি, পরিবর্তন, বা মুছে ফেলা যায়। এটি ফাইল এবং ডিরেক্টরির অনুমতি (permission), মালিকানা (ownership), এবং লিঙ্ক (symbolic/soft link) তৈরি করতে ব্যবহৃত হয়।
file
মডিউলের সাধারণ সিনট্যাক্স:- name: Example task using file module
file:
path: /path/to/file_or_directory
state: present/absent/directory/touch/link/hard
owner: username
group: groupname
mode: '0755'
- name: Create a directory
file:
path: /var/www/html
state: directory
mode: '0755'
owner: apache
group: apache
- name: Remove a file
file:
path: /var/www/html/oldfile.txt
state: absent
- name: Create a symbolic link
file:
src: /var/www/html
dest: /var/www/current
state: link
copy
মডিউলcopy
মডিউল ব্যবহার করে লোকাল সিস্টেম থেকে রিমোট সিস্টেমে ফাইল কপি করা যায়। এটি সাধারণত স্ট্যাটিক কনফিগারেশন ফাইল কপি করতে ব্যবহৃত হয়।
copy
মডিউলের সাধারণ সিনট্যাক্স:- name: Copy a file
copy:
src: /path/to/local_file
dest: /path/to/remote_file
owner: username
group: groupname
mode: '0644'
- name: Copy a configuration file
copy:
src: files/nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
template
মডিউলtemplate
মডিউল ব্যবহার করে Jinja2 টেম্পলেট ফাইল থেকে ডায়নামিক কনফিগারেশন ফাইল তৈরি এবং কপি করা যায়। এটি copy
মডিউলের মতো, তবে ডায়নামিক ডেটা ও ভ্যারিয়েবল ব্যবহারের মাধ্যমে কনফিগারেশন তৈরি করে।
- name: Deploy a configuration file using template
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
synchronize
মডিউলrsync
এর মতো synchronize
মডিউল ব্যবহার করে লোকাল এবং রিমোট সিস্টেমের মধ্যে ফাইল এবং ডিরেক্টরির মধ্যে সিঙ্ক্রোনাইজ করা যায়। এটি বড় ডিরেক্টরি বা ডেটা স্থানান্তরের জন্য কার্যকর।
synchronize
মডিউলের সাধারণ সিনট্যাক্স:- name: Synchronize directories
synchronize:
src: /local/path
dest: /remote/path
delete: yes
- name: Synchronize website files
synchronize:
src: /var/www/html/
dest: /backup/html/
delete: yes
fetch
মডিউলfetch
মডিউল রিমোট সিস্টেম থেকে লোকাল সিস্টেমে ফাইল নিয়ে আসে। এটি লোগ বা কনফিগারেশন ফাইল কপি করার জন্য কার্যকর।
- name: Fetch a log file from remote host
fetch:
src: /var/log/nginx/access.log
dest: /tmp/nginx_logs/
flat: yes
unarchive
মডিউলunarchive
মডিউল রিমোট সিস্টেমে আর্কাইভ ফাইল (যেমন: .zip
, .tar.gz
) আনজিপ বা আনআর্কাইভ করতে ব্যবহৃত হয়।
- name: Unarchive a tar file
unarchive:
src: /path/to/archive.tar.gz
dest: /var/www/html/
remote_src: yes
Ansible-এ ফাইল এবং ডিরেক্টরি ম্যানেজমেন্টের জন্য বিভিন্ন মডিউল ব্যবহার করা যায়:
file
: ফাইল বা ডিরেক্টরি তৈরি, মুছে ফেলা, বা মালিকানা ও পারমিশন সেট করা।copy
: লোকাল সিস্টেম থেকে রিমোটে ফাইল কপি করা।template
: Jinja2 টেম্পলেট ব্যবহার করে ডায়নামিক কনফিগারেশন তৈরি করা।synchronize
: লোকাল এবং রিমোট সিস্টেমের মধ্যে ডিরেক্টরি সিঙ্ক্রোনাইজ করা।fetch
: রিমোট থেকে লোকাল সিস্টেমে ফাইল কপি করা।unarchive
: রিমোট সিস্টেমে আর্কাইভ ফাইল আনআর্কাইভ করা।এই মডিউলগুলোর মাধ্যমে, আপনি সহজেই আপনার ইনফ্রাস্ট্রাকচার এবং সার্ভারের ফাইল ম্যানেজমেন্ট অটোমেট করতে পারবেন। Ansible-এর ফাইল এবং ডিরেক্টরি ম্যানেজমেন্ট মডিউলগুলি ব্যবহার করে প্লেবুক তৈরি করা সহজ এবং কার্যকর হয়।
Ansible এ copy মডিউল ব্যবহার করে আপনি লোকাল মেশিন (যেখান থেকে প্লেবুক রান করা হচ্ছে) থেকে একটি ফাইল বা ডিরেক্টরি রিমোট হোস্টে কপি করতে পারেন। এটি একটি সাধারণ এবং সহজ মডিউল যা ফাইল কনফিগারেশন, স্ক্রিপ্ট ডিপ্লয়মেন্ট, বা নির্দিষ্ট টেমপ্লেট কপি করার জন্য ব্যবহৃত হয়।
copy
মডিউল ব্যবহার করার জন্য, আপনি src
এবং dest
নামের দুটি প্যারামিটার ব্যবহার করেন:
---
- name: Copy a file to remote hosts
hosts: all
become: yes
tasks:
- name: Copy the Apache config file
copy:
src: /local/path/to/apache.conf
dest: /etc/apache2/apache2.conf
owner: root
group: root
mode: '0644'
উপরের প্লেবুকে copy
মডিউল ব্যবহার করা হয়েছে /local/path/to/apache.conf
ফাইলটি /etc/apache2/apache2.conf
পাথে রিমোট হোস্টে কপি করার জন্য। এখানে:
root
।root
।'0644'
।yes
করা হয়, তাহলে Ansible ডেস্টিনেশন ফাইলের একটি ব্যাকআপ কপি রাখবে যদি ফাইলটি আগে থেকেই থাকে। উদাহরণ:copy:
src: /path/to/file
dest: /destination/path
backup: yes
yes
, যার মানে Ansible সোর্স ফাইলের সাথে মিলিয়ে ডেস্টিনেশন ফাইল পরিবর্তন করবে। যদি আপনি ফোর্স করা বন্ধ করতে চান, তাহলে force: no
ব্যবহার করতে পারেন।remote_src: yes
ব্যবহার করতে হবে।copy:
src: /path/on/remote/host/file.txt
dest: /another/path/on/remote/host/file.txt
remote_src: yes
- name: Copy a directory recursively
copy:
src: /local/path/to/directory/
dest: /remote/path/to/directory/
mode: '0755'
এখানে src
ফোল্ডারটি dest
ফোল্ডারে কপি করা হবে রিমোট হোস্টে। এটি রিকার্সিভলি (অর্থাৎ সাব-ডিরেক্টরি এবং ফাইল সহ) কপি করা হবে।
- name: Backup and copy a file
copy:
src: /path/to/file.txt
dest: /etc/config/file.txt
backup: yes
এখানে, ফাইলটি কপি করার আগে যদি /etc/config/file.txt
ফাইলটি থাকে, তাহলে তার একটি ব্যাকআপ তৈরি করা হবে।
Ansible এ copy মডিউলটি একটি সহজ কিন্তু শক্তিশালী টুল যা লোকার ফাইল বা ডিরেক্টরি রিমোট হোস্টে কপি করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন প্যারামিটার এবং অপশন সহ ব্যবহার করা যায়, যেমন: মালিকানা, পারমিশন, ব্যাকআপ এবং রিমোট সোর্স কপি। এই মডিউল ব্যবহার করে আপনি সহজেই আপনার কনফিগারেশন ফাইল, স্ক্রিপ্ট বা অন্যান্য টেমপ্লেট ফাইল ডিপ্লয় করতে পারেন।
Ansible এর file মডিউল ব্যবহার করে আপনি ফাইল এবং ডিরেক্টরি তৈরি, মুছা, পারমিশন সেট করা এবং লিঙ্ক তৈরি করার মতো কাজ করতে পারেন। এই মডিউলটি অত্যন্ত ফ্লেক্সিবল এবং এটি বিভিন্ন ফাইল বা ডিরেক্টরি সম্পর্কিত কাজ সম্পাদনের জন্য ব্যবহৃত হয়।
file মডিউলটি সাধারণত নিচের কাজগুলো করার জন্য ব্যবহৃত হয়:
- name: File or directory management
ansible.builtin.file:
path: /path/to/file_or_directory
state: touch / directory / absent / link / hard
owner: username
group: groupname
mode: permissions
---
- name: Create an empty file
hosts: localhost
tasks:
- name: Create a file named example.txt
ansible.builtin.file:
path: /tmp/example.txt
state: touch
owner: ubuntu
group: ubuntu
mode: '0644'
ব্যাখ্যা:
/tmp/example.txt
)।'0644'
)।---
- name: Create a directory
hosts: localhost
tasks:
- name: Create a directory named /tmp/mydirectory
ansible.builtin.file:
path: /tmp/mydirectory
state: directory
owner: ubuntu
group: ubuntu
mode: '0755'
ব্যাখ্যা:
---
- name: Remove a file or directory
hosts: localhost
tasks:
- name: Remove example.txt file
ansible.builtin.file:
path: /tmp/example.txt
state: absent
- name: Remove /tmp/mydirectory directory
ansible.builtin.file:
path: /tmp/mydirectory
state: absent
ব্যাখ্যা:
---
- name: Create a symbolic link
hosts: localhost
tasks:
- name: Create a symlink from /tmp/symlink.txt to /tmp/example.txt
ansible.builtin.file:
src: /tmp/example.txt
path: /tmp/symlink.txt
state: link
ব্যাখ্যা:
---
- name: Change ownership and permissions
hosts: localhost
tasks:
- name: Change ownership and permissions of /tmp/example.txt
ansible.builtin.file:
path: /tmp/example.txt
owner: ubuntu
group: ubuntu
mode: '0644'
ব্যাখ্যা:
স্টেট | বর্ণনা |
---|---|
touch | একটি খালি ফাইল তৈরি করবে বা ফাইলের টাইমস্ট্যাম্প আপডেট করবে। |
directory | একটি নতুন ডিরেক্টরি তৈরি করবে। |
absent | ফাইল বা ডিরেক্টরি মুছে ফেলবে। |
link | একটি সিম্বলিক লিঙ্ক তৈরি করবে। |
hard | একটি হার্ড লিঙ্ক তৈরি করবে। |
Ansible এর file মডিউলটি ফাইল এবং ডিরেক্টরি ম্যানেজমেন্টের জন্য একটি শক্তিশালী এবং ফ্লেক্সিবল উপায় প্রদান করে। এর মাধ্যমে আপনি ফাইল এবং ডিরেক্টরি তৈরি, মুছা, পারমিশন ও মালিকানা সেট করতে পারেন। এটি আপনার প্লেবুককে আরও কার্যকর এবং কাস্টমাইজড করে তুলতে সাহায্য করে।
Ansible এ আর্কাইভ (Archive) এবং আনআর্কাইভ (Unarchive) মডিউলগুলো ফাইল বা ডিরেক্টরির সংরক্ষণ এবং পুনরুদ্ধার করার জন্য ব্যবহৃত হয়। এই মডিউলগুলো ব্যবহার করে আপনি সহজেই ফাইল এবং ডিরেক্টরি সংরক্ষণ করতে, সেগুলো আনপ্যাক করতে বা অন্যান্য সার্ভারে এক্সট্র্যাক্ট করতে পারেন। চলুন, প্রতিটি মডিউল সম্পর্কে বিস্তারিত আলোচনা করা যাক।
আর্কাইভ মডিউল একটি নির্দিষ্ট ফাইল বা ডিরেক্টরিকে আর্কাইভ ফাইলে (যেমন: .tar
, .zip
) প্যাক করতে ব্যবহৃত হয়। এটি বিশেষ করে তখন কার্যকরী, যখন আপনি একটি ডিরেক্টরি বা ফাইলের ব্যাকআপ নিতে চান বা একটি কম্প্রেসড ফাইল তৈরি করতে চান।
---
- name: Archive files and directories
hosts: localhost
tasks:
- name: Create a tar.gz archive of /var/www/html
ansible.builtin.archive:
path: /var/www/html
dest: /tmp/html_backup.tar.gz
format: gz
gz
, bz2
, xz
, বা zip
ব্যবহার করা যায়।true
সেট করা হয়, তাহলে আর্কাইভ তৈরি করার পর উৎস ফাইল বা ডিরেক্টরি মুছে ফেলা হবে।- name: Archive and remove the original directory
hosts: localhost
tasks:
- name: Create a compressed archive and remove source
ansible.builtin.archive:
path: /var/log/myapp
dest: /tmp/myapp_logs.tar.gz
format: gz
remove: true
ব্যাখ্যা: আর্কাইভ ফাইল তৈরির পর /var/log/myapp
ডিরেক্টরিটি মুছে ফেলা হবে।
আনআর্কাইভ মডিউল আর্কাইভ ফাইল (যেমন .tar.gz
, .zip
) আনপ্যাক করতে ব্যবহৃত হয়। এটি বিশেষ করে ডিপ্লয়মেন্ট বা কোনো ফাইলের কনটেন্ট এক্সট্র্যাক্ট করতে উপযোগী।
---
- name: Unarchive a file
hosts: localhost
tasks:
- name: Extract the html_backup.tar.gz archive
ansible.builtin.unarchive:
src: /tmp/html_backup.tar.gz
dest: /var/www/html
remote_src: yes
yes
সেট করা হয়, তাহলে এটি মনে করবে যে আর্কাইভ ফাইলটি রিমোট হোস্টে অবস্থিত।- name: Unarchive only if directory does not exist
hosts: localhost
tasks:
- name: Extract the archive if not already extracted
ansible.builtin.unarchive:
src: /tmp/html_backup.tar.gz
dest: /var/www/html
remote_src: yes
creates: /var/www/html/index.html
ব্যাখ্যা: যদি /var/www/html/index.html
ফাইলটি আগে থেকেই থাকে, তাহলে আনআর্কাইভ মডিউল কিছু করবে না।
একই প্লেবুকে আর্কাইভ এবং আনআর্কাইভ মডিউল ব্যবহার করে আপনি ফাইলের ব্যাকআপ নিতে এবং তা পুনরুদ্ধার করতে পারেন:
---
- name: Backup and restore example
hosts: localhost
tasks:
- name: Archive the application logs
ansible.builtin.archive:
path: /var/log/myapp
dest: /tmp/myapp_logs_backup.tar.gz
format: gz
- name: Unarchive the logs to backup directory
ansible.builtin.unarchive:
src: /tmp/myapp_logs_backup.tar.gz
dest: /backup/logs
remote_src: yes
মডিউল | বর্ণনা |
---|---|
archive | একটি ফাইল বা ডিরেক্টরিকে আর্কাইভ ফাইলে প্যাক করে। |
unarchive | আর্কাইভ ফাইল আনপ্যাক করে এবং গন্তব্যস্থলে এক্সট্র্যাক্ট করে। |
Ansible এর archive এবং unarchive মডিউল ব্যবহার করে সহজেই ফাইল বা ডিরেক্টরি সংরক্ষণ ও পুনরুদ্ধার করতে পারবেন। এটি বিশেষ করে ব্যাকআপ এবং ডিপ্লয়মেন্টের জন্য খুবই কার্যকর।